<?php 
/**
 *  Por Federico Pisarello - SisDev Software (c) 2013 - Buenos Aires, Argentina.
 * 	fpisarello@sisdevsoft.com
 */

require("includes/funciones.inc.php");

session_start();
if(!isset($_SESSION['nombreUsuario']))
	exit();

function searchABMOrdenFabricacion()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables();
	
	$datatables
			->select('o.idOrdenFabricacion, o.fecha, o.estado')
			->from('orden_fabricacion o')
			->edit_column('o.fecha','$1','formatoFecha(o.fecha)') // php functions
			->edit_column('o.estado','$1','devuelveEstadoOF(o.estado)') // php functions
			->add_column('edit', '<img src="images/details_open.png">')
			->where("o.estado <> '".$stateErase."'");

	return $datatables->generate();	
}

function devuelveEstadoOF($estado)
{
	require("includes/constants.php");
	
	switch ($estado) {
		case $ordenFabricacionIngresada:
			return "Ingresada";
			break;
		case $ordenFabricacionEnProceso:
			return "En Proceso";
			break;
		case $ordenFabricacionFinalizada:
			return "Finalizada";
			break;
	}
}

function addOrdenFabricacion()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
		
	$DB->StartTrans(); // start transaction
	
	$fecha = date("Y-m-d", strtotime('now'));
		
	$strSQL = "INSERT INTO orden_fabricacion ( ";
	$strSQL .= "	fecha, ";
	$strSQL .= "	estado ";
	$strSQL .= "	) VALUES ( ";
	$strSQL .= "	'".$fecha."', ";
	$strSQL .= "	'".$ordenFabricacionIngresada."' ";
	$strSQL .= "	)";
	
	$DB->Execute($strSQL);
	$insert_ID = $DB->Insert_ID();

	//Proceso los Items
	$arrItems = json_decode($_REQUEST["jaItems"]);
	$item = 1;
	foreach ($arrItems as $joItem) {
		
		$strSQL = "SELECT pi.idPedido, pi.item, pi.descripcion, pi.tipo, pi.cantidad, a.mtsPieza FROM pedidos_items pi
						INNER JOIN pedidos p ON p.idPedido = pi.idPedido AND p.estado <> '$stateErase'
						INNER JOIN articulos a ON a.idArticulo = pi.idArticulo 
						WHERE (pi.idPedido, pi.item) NOT IN (SELECT idPedido, idItemPedido FROM picking_items) AND
							  (pi.idPedido, pi.item) NOT IN (SELECT idPedido, itemP FROM orden_fabricacion_pedidos)
							AND pi.idArticulo = '".$joItem->id."'
							AND pi.variedad = '".$joItem->variedad."'";
		
		if($_REQUEST['cmbTipo'] != "") {
			$strSQL .= " AND pi.tipo = '".$_REQUEST['cmbTipo']."'";
		}
		
		$rsPedidosItems = $DB->Execute($strSQL);
		
		$cantidad = 0;
		$cantidadMuestra = 0;
		if(!$rsPedidosItems->EOF) {
			$descArticulo = $rsPedidosItems->fields('descripcion');
			$mtsPieza = $rsPedidosItems->fields('mtsPieza');
		}
		while(!$rsPedidosItems->EOF){
			$strSQL = "INSERT INTO orden_fabricacion_pedidos VALUES ( ";
			$strSQL .= "	".$insert_ID.", ";
			$strSQL .= "	".$item.", ";
			$strSQL .= "	".$rsPedidosItems->fields('idPedido').", ";
			$strSQL .= "	".$rsPedidosItems->fields('item')." ";
			$strSQL .= "	)";
			
			$DB->Execute($strSQL);
			
			//Armo las Piezas segun el Tipo de Pedido
			if($rsPedidosItems->fields('tipo') == $tipoMuestra) {
				$cantidadMuestra += $rsPedidosItems->fields('cantidad');
			}
			else {
				if($rsPedidosItems->fields('cantidad') > $mtsPieza) {
					$canPiezas = ceil($rsPedidosItems->fields('cantidad') / $mtsPieza);
					//Grabo la cantidad de Piezas				
					for ($i = 1; $i <= $canPiezas; $i++) {
						$strSQL = "INSERT INTO orden_fabricacion_piezas (";
						$strSQL .= "	idOrdenFabricacion, ";
						$strSQL .= "	item, ";
						$strSQL .= "	idArticulo, ";
						$strSQL .= "	descripcion, ";
						$strSQL .= "	variedad, ";
						$strSQL .= "	cantidad, ";
						$strSQL .= "	tipo ";
						$strSQL .= "	) VALUES ( ";
						$strSQL .= "	".$insert_ID.", ";
						$strSQL .= "	".$item.", ";
						$strSQL .= "	".$joItem->id.", ";
						$strSQL .= "	'".$descArticulo."', ";
						$strSQL .= "	'".$joItem->variedad."', ";
						$strSQL .= "	'".$rsPedidosItems->fields('mtsPieza')."', ";
						$strSQL .= "	'".$tipoProduccion."' ";
						$strSQL .= "	)";
		
						$DB->Execute($strSQL);
					}
				}
				else {
					$strSQL = "INSERT INTO orden_fabricacion_piezas (";
					$strSQL .= "	idOrdenFabricacion, ";
					$strSQL .= "	item, ";
					$strSQL .= "	idArticulo, ";
					$strSQL .= "	descripcion, ";
					$strSQL .= "	variedad, ";
					$strSQL .= "	cantidad, ";
					$strSQL .= "	tipo ";
					$strSQL .= "	) VALUES ( ";
					$strSQL .= "	".$insert_ID.", ";
					$strSQL .= "	".$item.", ";
					$strSQL .= "	".$joItem->id.", ";
					$strSQL .= "	'".$descArticulo."', ";
					$strSQL .= "	'".$joItem->variedad."', ";
					$strSQL .= "	'".$rsPedidosItems->fields('mtsPieza')."', ";
					$strSQL .= "	'".$tipoProduccion."' ";
					$strSQL .= "	)";
					
					$DB->Execute($strSQL);
				}
			}
			
			$cantidad += $rsPedidosItems->fields('cantidad');

			$rsPedidosItems->MoveNext();
		}
		
		if($cantidadMuestra > 0) {
			if($cantidadMuestra > $mtsPieza) {
				$canPiezas = ceil($cantidadMuestra / $mtsPieza);
				
				$strSQL = "INSERT INTO orden_fabricacion_piezas (";
				$strSQL .= "	idOrdenFabricacion, ";
				$strSQL .= "	item, ";
				$strSQL .= "	idArticulo, ";
				$strSQL .= "	descripcion, ";
				$strSQL .= "	variedad, ";
				$strSQL .= "	cantidad, ";
				$strSQL .= "	tipo ";
				$strSQL .= "	) VALUES ( ";
				$strSQL .= "	".$insert_ID.", ";
				$strSQL .= "	0, ";
				$strSQL .= "	".$joItem->id.", ";
				$strSQL .= "	'".$descArticulo."', ";
				$strSQL .= "	'".$joItem->variedad."', ";
				$strSQL .= "	'".$mtsPieza."', ";
				$strSQL .= "	'".$tipoMuestra."' ";
				$strSQL .= "	)";
					
				$DB->Execute($strSQL);
			}
			else {
				$strSQL = "INSERT INTO orden_fabricacion_piezas (";
				$strSQL .= "	idOrdenFabricacion, ";
				$strSQL .= "	item, ";
				$strSQL .= "	idArticulo, ";
				$strSQL .= "	descripcion, ";
				$strSQL .= "	variedad, ";
				$strSQL .= "	cantidad, ";
				$strSQL .= "	tipo ";
				$strSQL .= "	) VALUES ( ";
				$strSQL .= "	".$insert_ID.", ";
				$strSQL .= "	0, ";
				$strSQL .= "	".$joItem->id.", ";
				$strSQL .= "	'".$descArticulo."', ";
				$strSQL .= "	'".$joItem->variedad."', ";
				$strSQL .= "	'".$mtsPieza."', ";
				$strSQL .= "	'".$tipoMuestra."' ";
				$strSQL .= "	)";
					
				$DB->Execute($strSQL);
			}
		}
		
		$strSQL = "INSERT INTO orden_fabricacion_items VALUES ( ";
		$strSQL .= "	".$insert_ID.", ";
		$strSQL .= "	".($item++).", ";
		$strSQL .= "	".$joItem->id.", ";
		$strSQL .= "	'".$descArticulo."', ";
		$strSQL .= "	'".$joItem->variedad."', ";
		$strSQL .= "	'".$cantidad."' ";
		$strSQL .= "	)";

		$DB->Execute($strSQL);
	}
	
	$arrItems1 = array_map("getIdsArticulo", $arrItems);
	
	$arrSumaCantidadMuestras = array();
	
	//Proceso los Subitems
	$arrSubItems = json_decode($_REQUEST["jaSubitems"]);
	foreach ($arrSubItems as $joSubItem) {
		
		//Chequeo que no este Tildado el Item Superior de la Orden de Fabricacion
		if(!in_array($joSubItem->id.",".$joSubItem->variedad, $arrItems1)) {
			
			$strSQL = "SELECT pi.idPedido, pi.item, pi.descripcion, pi.tipo, pi.cantidad FROM pedidos_items pi
						INNER JOIN pedidos p ON p.idPedido = pi.idPedido AND p.estado <> '$stateErase'
						WHERE (pi.idPedido, pi.item) NOT IN (SELECT idPedido, idItemPedido FROM picking_items) AND
							  (pi.idPedido, pi.item) NOT IN (SELECT idPedido, itemP FROM orden_fabricacion_pedidos)
							AND pi.idArticulo = '".$joSubItem->id."'
							AND pi.variedad = '".$joSubItem->variedad."'
							AND p.idCliente = '".$joSubItem->idCliente."'";
			
			$rsPedidosItems = $DB->Execute($strSQL);
			
			$cantidad = 0;
			
			if(!$rsPedidosItems->EOF)
				$descArticulo = $rsPedidosItems->fields('descripcion');
			while(!$rsPedidosItems->EOF){
				$strSQL = "INSERT INTO orden_fabricacion_pedidos VALUES ( ";
				$strSQL .= "	".$insert_ID.", ";
				$strSQL .= "	".$item.", ";
				$strSQL .= "	".$rsPedidosItems->fields('idPedido').", ";
				$strSQL .= "	".$rsPedidosItems->fields('item')." ";
				$strSQL .= "	)";
					
				$DB->Execute($strSQL);
				
				//Armo las Piezas segun el Tipo de Pedido
				if($rsPedidosItems->fields('tipo') == $tipoMuestra) {
					sumaCantidadMuestraSubitem($arrSumaCantidadMuestras, $joSubItem->id, $descArticulo, $joSubItem->variedad, $rsPedidosItems->fields('cantidad'));
				}
				else {
					$strSQL = "INSERT INTO orden_fabricacion_piezas (";
					$strSQL .= "	idOrdenFabricacion, ";
					$strSQL .= "	item, ";
					$strSQL .= "	idArticulo, ";
					$strSQL .= "	descripcion, ";
					$strSQL .= "	variedad, ";
					$strSQL .= "	cantidad, ";
					$strSQL .= "	tipo ";
					$strSQL .= "	) VALUES ( ";
					$strSQL .= "	".$insert_ID.", ";
					$strSQL .= "	".$item.", ";
					$strSQL .= "	".$joSubItem->id.", ";
					$strSQL .= "	'".$descArticulo."', ";
					$strSQL .= "	'".$joSubItem->variedad."', ";
					$strSQL .= "	'".$rsPedidosItems->fields('cantidad')."', ";
					$strSQL .= "	'".$tipoProduccion."' ";
					$strSQL .= "	)";
						
					$DB->Execute($strSQL);
				}
					
				$cantidad += $rsPedidosItems->fields('cantidad');
			
				$rsPedidosItems->MoveNext();
			}
			
			$strSQL = "INSERT INTO orden_fabricacion_items VALUES ( ";
			$strSQL .= "	".$insert_ID.", ";
			$strSQL .= "	".($item++).", ";
			$strSQL .= "	".$joSubItem->id.", ";
			$strSQL .= "	'".$descArticulo."', ";
			$strSQL .= "	'".$joSubItem->variedad."', ";
			$strSQL .= "	'".$cantidad."' ";
			$strSQL .= "	)";
		
			$DB->Execute($strSQL);
		}
	}
		
	foreach($arrSumaCantidadMuestras as $value) {
		$strSQL = "INSERT INTO orden_fabricacion_piezas (";
		$strSQL .= "	idOrdenFabricacion, ";
		$strSQL .= "	item, ";
		$strSQL .= "	idArticulo, ";
		$strSQL .= "	descripcion, ";
		$strSQL .= "	variedad, ";
		$strSQL .= "	cantidad, ";
		$strSQL .= "	tipo ";
		$strSQL .= "	) VALUES ( ";
		$strSQL .= "	".$insert_ID.", ";
		$strSQL .= "	0, ";
		$strSQL .= "	".$value->idArticulo.", ";
		$strSQL .= "	'".$value->descArticulo."', ";
		$strSQL .= "	'".$value->variedad."', ";
		$strSQL .= "	'".$value->cantidad."', ";
		$strSQL .= "	'".$tipoMuestra."' ";
		$strSQL .= "	)";
	
		$DB->Execute($strSQL);
	}
	
	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = "Error al Grabar la Orden de Fabricaci&oacute;n";
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = "La Orden de Fabricaci&oacute;n fue Guardada con Exito";
	}	
	return json_encode($arrJSON);
}

function sumaCantidadMuestraSubitem(&$arr, $idArticulo, $descArticulo, $variedad, $cantidad)
{
	foreach ($arr as $valor) {
		if($valor->idArticulo == $idArticulo && $valor->variedad == $variedad) {
			$valor->cantidad += $cantidad;
			return;
		}
	}
	
	$valor->idArticulo = $idArticulo;
	$valor->descArticulo = $descArticulo;
	$valor->variedad = $variedad;
	$valor->cantidad = $cantidad;
	
	array_push($arr, $valor);
	
	return;
}

function getIdsArticulo($objItem)
{
	return $objItem->id.",".$objItem->variedad;
}

function del()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;`
	
	//Verifico que no este Pickiado
	$strSQL = "SELECT * FROM orden_fabricacion WHERE idOrdenFabricacion = " . $_REQUEST["idOrdenFabricacion"];
	$rsOF = $DB->Execute($strSQL);
	
	if($rsOF->fields('estado') == $ordenFabricacionEnProceso || $rsOF->fields('estado') == $ordenFabricacionFinalizada)
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = "No se puede Eliminar esta Orden de Fabricaci&oacute;n";
		return json_encode($arrJSON);
	}
	
	$DB->StartTrans(); // start transaction
	$DB->Execute("UPDATE orden_fabricacion SET estado = '$stateErase' WHERE idOrdenFabricacion = " . $_REQUEST["idOrdenFabricacion"]); // execute query
	$DB->Execute("DELETE FROM orden_fabricacion_items WHERE idOrdenFabricacion = " . $_REQUEST["idOrdenFabricacion"]); // execute query	
	$DB->Execute("DELETE FROM orden_fabricacion_pedidos WHERE idOrdenFabricacion = " . $_REQUEST["idOrdenFabricacion"]); // execute query
	$DB->Execute("DELETE FROM orden_fabricacion_piezas WHERE idOrdenFabricacion = " . $_REQUEST["idOrdenFabricacion"]); // execute query

	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = "Error al Eliminar la Orden de Fabricaci&oacute;n";
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = "La Orden de Fabricaci&oacute;n se Elimino Correctamente";
	}	
	return json_encode($arrJSON);
}

function procesar()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;`

	//Verifico que no este Pickiado
	$strSQL = "SELECT * FROM orden_fabricacion WHERE idOrdenFabricacion = " . $_REQUEST["idOrdenFabricacion"];
	$rsOF = $DB->Execute($strSQL);

	if($rsOF->fields('estado') == $ordenFabricacionEnProceso || $rsOF->fields('estado') == $ordenFabricacionFinalizada)
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = "No se puede Procesar esta Orden de Fabricaci&oacute;n";
		return json_encode($arrJSON);
	}

	$DB->StartTrans(); // start transaction
	$DB->Execute("UPDATE orden_fabricacion SET estado = '$ordenFabricacionEnProceso' WHERE idOrdenFabricacion = " . $_REQUEST["idOrdenFabricacion"]); // execute query

	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = "Error al Procesar la Orden de Fabricaci&oacute;n";
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = "La Orden de Fabricaci&oacute;n se encuentra en Proceso";
	}
	return json_encode($arrJSON);
}

function finalizar()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;

	//Verifico que no este en Proceso
	$strSQL = "SELECT * FROM orden_fabricacion WHERE idOrdenFabricacion = " . $_REQUEST["idOrdenFabricacion"];
	$rsOF = $DB->Execute($strSQL);

	if($rsOF->fields('estado') == $ordenFabricacionIngresada || $rsOF->fields('estado') == $ordenFabricacionFinalizada)
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = "No se puede Finalizar esta Orden de Fabricaci&oacute;n";
		return json_encode($arrJSON);
	}

	$DB->StartTrans(); // start transaction
	$DB->Execute("UPDATE orden_fabricacion SET estado = '$ordenFabricacionFinalizada' WHERE idOrdenFabricacion = " . $_REQUEST["idOrdenFabricacion"]); // execute query
	
	$arrPiezasOF = json_decode($_REQUEST['joDataPiezasItems']);;
	foreach ($arrPiezasOF as $pieza) {	
		//Cargo las Piezas al Stock
		$strSQL = "SELECT * FROM orden_fabricacion_piezas WHERE idOrdenFabricacion = " . $_REQUEST["idOrdenFabricacion"] . " AND pieza = " . $pieza->pieza;
		$rsOFPizas = $DB->Execute($strSQL);
					
		$strSQL = "INSERT INTO articulos_piezas (";
		$strSQL .= "	descripcion, ";
		$strSQL .= "	idArticulo, ";
		$strSQL .= "	variedad, ";
		$strSQL .= "	cantidad, ";
		$strSQL .= "	tipo, ";
		$strSQL .= "	codPieza ";
		$strSQL .= "	) VALUES ( ";
		$strSQL .= "	'PIEZA ".$rsOFPizas->fields('pieza')."', ";
		$strSQL .= "	'".$rsOFPizas->fields('idArticulo')."', ";
		$strSQL .= "	'".$rsOFPizas->fields('variedad')."', ";
		$strSQL .= "	'".$pieza->canMtsPieza."', ";
		$strSQL .= "	'".$rsOFPizas->fields('tipo')."', ";
		$strSQL .= "	'".$rsOFPizas->fields('pieza')."' ";
		$strSQL .= "	)";
		
		$DB->Execute($strSQL);
		
		//Actualizo el Stock en Articulos
		$DB->Execute("UPDATE articulos_variedades SET cantidad = cantidad + ".$pieza->canMtsPieza." WHERE idArticulo = ".$rsOFPizas->fields('idArticulo')." AND variedad = '".$rsOFPizas->fields('variedad')."'");		
	}

	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = "Error al Finalizar la Orden de Fabricaci&oacute;n";
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = "Se Finaliz&oacute; la Orden de Fabricaci&oacute;n";
	}
	return json_encode($arrJSON);
}

function searchOrdenFabricacionDetalle()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	
	//Items de la Orden de Fabricacion
	$strSQL = "SELECT ofi.*, a.codProducto FROM orden_fabricacion_items ofi
				INNER JOIN articulos a ON ofi.idArticulo = a.idArticulo
				WHERE ofi.idOrdenFabricacion = ".$_REQUEST["idOrdenFabricacion"];

	$rsOFItems = $DB->Execute($strSQL);

	if($rsOFItems->EOF)
		return "";

	$strOutput = "<tr><td colspan='4'><strong>Item de la Orden de Fabricaci&oacute;n</strong><td></tr>";
	$strOutput .= "<tr><td>Cod. Facturaci&oacute;n</td><td>Descripci&oacute;n</td><td>Variedad</td><td>Cantidad</td></tr>";

	while(!$rsOFItems->EOF){
		$strOutput .= "<tr><td>".$rsOFItems->fields("codProducto")."</td><td>".$rsOFItems->fields("descripcion")."</td><td>".$rsOFItems->fields("variedad")."</td><td>".$rsOFItems->fields("cantidad")."</td></tr>";
		$rsOFItems->MoveNext();
	}
	$strOutput .= "<tr><td colspan='4'>&nbsp;</td></tr>";
	
	//Piezas a Fabricar
	$strSQL = "SELECT ofp.*, a.codProducto FROM orden_fabricacion_piezas ofp
				INNER JOIN articulos a ON ofp.idArticulo = a.idArticulo
				WHERE ofp.idOrdenFabricacion = ".$_REQUEST["idOrdenFabricacion"];
	
	$rsOFItems = $DB->Execute($strSQL);
		
	$strOutput .= "<tr><td colspan='6'><strong>Piezas a Fabricar</strong><td></tr>";
	$strOutput .= "<tr><td>Cod. Facturaci&oacute;n</td><td>Descripci&oacute;n</td><td>Variedad</td><td>Descripci&oacute;n Pieza<td>Cantidad</td><td>Tipo</td></tr>";
	
	while(!$rsOFItems->EOF){
		$tipo = $rsOFItems->fields("tipo") == $tipoMuestra ? 'Muestra' : 'Producci&oacute;n';
		$strOutput .= "<tr><td>".$rsOFItems->fields("codProducto")."</td><td>".$rsOFItems->fields("descripcion")."</td><td>".$rsOFItems->fields("variedad")."</td><td>PIEZA ".$rsOFItems->fields("pieza")."</td><td>".$rsOFItems->fields("cantidad")."</td><td>".$tipo."</td></tr>";
		$rsOFItems->MoveNext();
	}
	$strOutput .= "<tr><td colspan='6'>&nbsp;</td></tr>";

	return $strOutput;
}

function searchOrdenFabricacionItemsDetalle()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$arrSelectedItems = json_decode($_REQUEST['jaSubitems']);
		
	if(isset($_REQUEST['tipo']))
		$tipo = "'".$_REQUEST['tipo']."'";
	else 
		$tipo = "'$tipoMuestra', '$tipoProduccion'";
	
	$strSQL = "SELECT c.idCliente, c.razonSocial, a.idArticulo, a.codProducto, pi.descripcion, pi.variedad, pi.tipo, SUM(pi.cantidad) canArticulo, SUM(pi.importe) impArticulo FROM pedidos_items pi
				INNER JOIN pedidos p ON pi.idPedido = p.idPedido AND p.estado <> '$stateErase'
				INNER JOIN clientes c ON p.idCliente = c.idCliente
				INNER JOIN articulos a ON pi.idArticulo = a.idArticulo
				WHERE (pi.idPedido, pi.item) NOT IN (SELECT idPedido, idItemPedido FROM picking_items) AND
					  (pi.idPedido, pi.item) NOT IN (SELECT idPedido, itemP FROM orden_fabricacion_pedidos)
						AND a.codProducto = '".$_REQUEST['codProducto']."'
						AND pi.tipo IN ($tipo)
						AND pi.variedad = '".$_REQUEST['variedad']."'
				GROUP BY c.idCliente, c.razonSocial, a.idArticulo, a.codProducto, pi.descripcion, pi.variedad";
	
	$rsDetalle = $DB->Execute($strSQL);
	
	if($rsDetalle->EOF)
		return "";
	
	$strOutput = "<tr><td></td><td>Cliente</td><td>Cod. Facturaci&oacute;n</td><td>Descripci&oacute;n</td><td>Tipo</td><td>Variedad</td><td>Cantidad</td><td>Importe</td></tr>";
	
	while(!$rsDetalle->EOF){
		
		$objSearch = "";
		$objSearch->id = $rsDetalle->fields("idArticulo");
		$objSearch->idCliente = $rsDetalle->fields("idCliente");
		$objSearch->cantidad = $rsDetalle->fields("canArticulo");
		
		$checked = in_array($objSearch, $arrSelectedItems) ? "checked" : "";
		 
		$tipo = $rsDetalle->fields("tipo") == $tipoMuestra ? 'Muestra' : 'Producci&oacute;n';
		$stdCheckbox = '<td><input style="width: 10px;" onclick="$_addRemoveSubitem(\''.$rsDetalle->fields("idArticulo").'\', \''.$rsDetalle->fields("variedad").'\', \''.$rsDetalle->fields("idCliente").'\')" type="checkbox" '.$checked.'></td>';
		$strOutput .= "<tr>".$stdCheckbox."<td>".$rsDetalle->fields("razonSocial")."</td><td>".$rsDetalle->fields("codProducto")."</td><td>".$rsDetalle->fields("descripcion")."</td><td>".$tipo."</td><td>".$rsDetalle->fields("variedad")."</td><td>".$rsDetalle->fields("canArticulo")."</td><td>$ ".$rsDetalle->fields("impArticulo")."</td></tr>";
		$rsDetalle->MoveNext();
	}
	
	return $strOutput;
}

function cargarPedidosPendientes()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables();
	
	if(isset($_REQUEST['tipo']))
		$tipo = "'".$_REQUEST['tipo']."'";
	else
		$tipo = "'$tipoMuestra', '$tipoProduccion'";
	
	$datatables->select('a.idArticulo, a.codProducto, pi.descripcion, pi.variedad, SUM(pi.cantidad) AS canArticulo, SUM(pi.importe) AS impArticulo')
				->from('pedidos_items pi')
				->join('pedidos p',"p.idPedido = pi.idPedido AND p.estado <> '$stateErase'", 'inner')
				->join('articulos a','a.idArticulo = pi.idArticulo', 'inner')
				->where("(pi.idPedido, pi.item) NOT IN (SELECT idPedido, idItemPedido FROM picking_items UNION ALL SELECT idPedido, itemP FROM orden_fabricacion_pedidos)")
				->where("pi.tipo IN (".$tipo.")")
				->groupby('a.idArticulo, a.codProducto, pi.descripcion, pi.variedad')
				->edit_column('a.idArticulo', '<input style="width: 10px;" onclick="$_addRemoveItem($1, \'$2\')" type="checkbox">', 'a.idArticulo, pi.variedad')
				->edit_column('impArticulo','$1','devuelveImporte(impArticulo)') // php functions
				->add_column('edit', '<img src="images/details_open.png">');
	
	return $datatables->generate();
}

function searchPiezasOrdenFabricacion()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");

	$datatables = new Datatables();

	$datatables->select('ofp.pieza, ofp.descripcion, ofp.variedad, ofp.cantidad, ofp.cantidad AS canFabricado')
				->from('orden_fabricacion_piezas ofp')
				->where('ofp.idOrdenFabricacion = '.$_REQUEST['idOrdenFabricacion'])
				->edit_column('canFabricado', '<input type="text" id="$1" class="gridInputMtsPieza" style="width: 100px" value="$2" />', 'ofp.pieza, canFabricado');

	return $datatables->generate();
}

switch($_REQUEST['accion'])
{
	case "PROCESAR":
		echo procesar();
		break;
	case "FINALIZAR":
		echo finalizar();
		break;
	case "DELETE":
		echo del();
		break;
	case "search":
		echo searchABMOrdenFabricacion();
		break;
	case "addOrdenFabricacion":
		echo addOrdenFabricacion();
		break;
	case "searchOrdenFabricacionDetalle":
		echo searchOrdenFabricacionDetalle();
		break;
	case "searchOrdenFabricacionItemsDetalle":
		echo searchOrdenFabricacionItemsDetalle();
		break;
	case "searchPiezasOrdenFabricacion":
		echo searchPiezasOrdenFabricacion();
		break;
	case "cargarPedidosPendientes":
		echo cargarPedidosPendientes();
		break;
}
?>
